package com.shujia.action.base

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

/**
  * 封装结构，将一个代码拆分成多个部分
  *
  */
trait UserActionBase {

  var df: DataFrame = _

  //用于情况缓冲
  def clear()

  //处理数据
  def process()

  //保存数据
  def save()

  //通过的保存数据的方法
  def save(path: String, day: String): Unit = {
    df
      .write
      .format(Constants.USER_ACTION_DATA_FORMAT)
      .mode(SaveMode.Overwrite)
      .save(path + day)
  }

  //加载数据，给比尔用的，使用load加载当前代码输出的数据
  def load(): DataFrame

  //通用的加上数据的方法
  def load(spark: SparkSession, path: String, day: String): DataFrame = {
    spark
      .read
      .format(Constants.USER_ACTION_DATA_FORMAT)
      .load(path + day)
  }

}
